An object-orientated programming language C# (pronounced “C-Sharp”) is implemented as an alternative to other high-level programming languages, such as C++ and Visual Basic. A full description of C# is detailed in the C# Language Specification, Standard ECMA-334 (2nd ed., December 2002), ECMA International.
A compiler is an application component of a programming language that processes source statements in source code written in the programming language by a programmer, and generates a machine code output that is executed by a computer processor. Generally, a compiler analyzes and/or parses the source statements syntactically in successive stages to build the output code.
A preprocessor may be implemented as an application component of a programming language and is an intermediate process before compiling the source code with a compiler. With a preprocessor, programming tasks can be automated that otherwise can not be implemented, or are difficult to implement, with the standard features of a programming language. Many high-level programming languages, such as C++, have both a preprocessor for intermediate source code translation and a compiler to translate the source code into executable machine code. However, in C#, there is no separate pre-processing step (Standard ECMA-334, page 62, ¶9.5). This limitation of the C# programming language makes it difficult to automate programming tasks and implement some programming features, such as functions defined by textual substitution (commonly known as “macros”).